//
//  ViewController.swift
//  01-BasicConcepts
//
//  Created by tank on 2019/4/7.
//  Copyright © 2019 tank. All rights reserved.
//

import UIKit
import RxSwift

class ViewController: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        // Do any additional setup after loading the view.
        
        _ = createObservable()
            .map{Int($0)}.debug()
            .filter{
                if let item = $0 , item % 2 == 0{
                    print("Even: \(item)")
                    return true
                }
                return false
        }.debug().subscribe{ event in
            print(event)
        }
    }
    
    
    // Create an observable
    func createObservable()-> RxSwift.Observable<String>{
        return Observable.from(["1","2","3","4","5","6","7","8","9"])
    }
    

}

/**
 1. Observable：以时间为索引的常量队列，可被监听的序列

 2. Operators：
    ① 一类用于创建 Observable
    ② 接受Observable作为参数，并返回一个新的Observable
 3. 使用 subscribe 这个 operator 订阅 Observable 中的事件，subscribe 将下面两者关联起来
    ① Observable：事件的产生者
    ② Observer：事件的订阅者
 4. Observer 和 Observable之间的约定：
    ① 当 Observable 正常发送事件时，会调用 Observer 提供的 onNext 方法，这个过程习惯上叫做 emissions；
    ② 当Observable成功结束时，会调用 Observer 提供的 onCompleted 方法；
    ③ 当Observable发生错误时，就会调用Observer 提供的 onError 方法，
       并且，一旦发生错误，就不会再继续发送其它事件了
    ④ 当Observable使用的资源被回收的时候，会调用Observer提供的onDisposed方法
 
 */

